<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

/**
 * 门店商品群组商品关联模型
 * 
 * @property int $id 主键
 * @property int $group_id 群组ID
 * @property int $store_id 门店ID
 * @property int $product_id 商品ID
 * @property \Carbon\Carbon $created_at
 * @property \Carbon\Carbon $updated_at
 */
class StoreProductGroupProduct extends Model
{
    /**
     * 表名
     */
    protected $table = 'ims_yz_store_product_group_products';

    /**
     * 主键
     */
    protected $primaryKey = 'id';

    /**
     * 可批量赋值的属性
     */
    protected $fillable = [
        'group_id',
        'store_id',
        'product_id',
    ];

    /**
     * 属性类型转换
     */
    protected $casts = [
        'id' => 'integer',
        'group_id' => 'integer',
        'store_id' => 'integer',
        'product_id' => 'integer',
        'created_at' => 'datetime',
        'updated_at' => 'datetime',
    ];

    /**
     * 关联：所属群组
     */
    public function group()
    {
        return $this->belongsTo(StoreProductGroup::class, 'group_id', 'id');
    }

    /**
     * 关联：所属门店
     */
    public function store()
    {
        return $this->belongsTo(Store::class, 'store_id', 'id');
    }

    /**
     * 关联：商品
     */
    public function product()
    {
        return $this->belongsTo(Goods::class, 'product_id', 'id');
    }

    /**
     * 根据群组ID查询
     */
    public function scopeByGroup($query, $groupId)
    {
        return $query->where('group_id', $groupId);
    }

    /**
     * 根据多个群组ID查询
     */
    public function scopeByGroups($query, array $groupIds)
    {
        return $query->whereIn('group_id', $groupIds);
    }

    /**
     * 根据门店ID查询
     */
    public function scopeByStore($query, $storeId)
    {
        return $query->where('store_id', $storeId);
    }

    /**
     * 根据商品ID查询
     */
    public function scopeByProduct($query, $productId)
    {
        return $query->where('product_id', $productId);
    }
}
